//
// 这里用调用三方库的例子来解释如何应用 Template Methmod 模板模式
//

// 假设有个算法，获得结果需要步骤1~5
// 现在需求变更，原来Library 里的步骤2和4发生了更改
// 这里直接用一个 Application来来定义更改后的 步骤2和4
#pragma once

#include <iostream>

class Library{
    
public:

    void Step01() {
        std::cout << "Library::Step01" << std::endl;
    }

    void Step02() {
        std::cout << "Library::Step02" << std::endl;
    }

    void Step03() {
        std::cout << "Library::Step03" << std::endl;
    }

    void Step04() {
        std::cout << "Library::Step04" << std::endl;
    }

    void Step05() {
        std::cout << "Library::Step05" << std::endl;
    }
};

class Application {
public:
    void Step02() {
        std::cout << "Application::Step02" << std::endl;
    }

    void Step04() {
        std::cout << "Application::Step04" << std::endl;
    }
};
